package org.fall.system.service;

import org.fall.system.model.ResultEntity;
import org.fall.system.model.dto.MemberDTO;
import org.fall.system.model.dto.MemberQueryDTO;
import org.fall.system.model.po.LeaderInfoPO;
import org.fall.system.model.vo.MemberVO;

import java.util.List;

/**
 * 会员管理-service层
 *
 * @author sprogFall
 * @since 2021/4/11 9:04
 */
public interface MemberManagementService {

    /**
     * 查询会员list
     * @param dto 查询条件
     * @return 查询结果
     */
    ResultEntity getMemberList(MemberQueryDTO dto);

    /**
     * 单个删除会员（软删除）
     * @param id 删除的会员的id
     * @return 删除结果
     */
    ResultEntity deleteMember(Integer id);

    /**
     * 根据会员id得到会员信息
     * @param id 查询的会员id
     * @return 查询结果VO
     */
    MemberVO getMemberById(Integer id);

    /**
     * 修改会员信息
     * @param dto dto
     * @return 修改结果
     */
    ResultEntity editMemberInfo(MemberDTO dto);

    /**
     * 得到领导信息list
     * @return List
     */
    List<LeaderInfoPO> getLeaderList();

    /**
     * 批量删除会员
     * @param list 删除的会员id的list
     * @return 删除结果
     */
    ResultEntity batchDeleteMembers(List<Integer> list);

    /**
     * 新增会员
     * @param dto dto
     * @return 新增结果
     */
    ResultEntity saveMember(MemberDTO dto);

    /**
     * 查询被删除的用户list
     * @param dto 查询条件
     * @return 查询结果
     */
    ResultEntity getDeletedMemberList(MemberQueryDTO dto);

    /**
     * 恢复软删除的用户
     * @param id 恢复用户的id
     * @return 恢复结果
     */
    ResultEntity restoreDeletedMember(Integer id);

    /**
     * 批量恢复被删除的用户
     * @param list 恢复用户的id list
     * @return 恢复结果
     */
    ResultEntity batchRestoreDeletedMember(List<Integer> list);

    /**
     * 彻底删除用户
     * @param id 要删除的用户id
     * @return 删除结果
     */
    ResultEntity completeDeleteMember(Integer id);
}
